home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
batchut
/
errlvl12.zip
/
ERRLVL.ASM
next >
Wrap
Assembly Source File
|
1994-03-08
|
34KB
|
879 lines
;--------------------------------------------------------------------------;
; Program: ErrLvl .Asm ;
; Purpose: Displays value of previous ERRORLEVEL. ;
; Notes: Compiles under TURBO Assembler, v3.0. Tested under ;
; MS/PC-DOS v3.30, v4.0, and v5.0. ;
; Status: Released into the public domain. Enjoy! If you use it, ;
; let me know what you think. You don't have to send ;
; any money, just comments and suggestions. ;
; Updates: 13-Jun-89, v1.0, GAT ;
; - initial version. ;
; 08-Jul-90, GAT ;
; - added macros to push/pop registers. ;
; 28-Aug-90, v1.1a, GAT ;
; - put equates and macros in separate files. ;
; - put common routines in libs. ;
; 28-Dec-90, v1.2a, GAT ;
; - added support for DOS v4.0. ;
; 15-Oct-91, v1.2b, GAT ;
; - revised include file names. ;
; - added support for DOS v5.0. ;
; 03-Jul-93, v1.2c, GAT ;
; - compiled with TASM v3.0. ;
; - version number now comes from makefile. ;
; - specified ??date in lowercase. ;
; 07-Jul-93, v1.2d, GAT ;
; - added support for DOS v6.0. ;
;--------------------------------------------------------------------------;
;--------------------------------------------------------------------------;
; Author: George A. Theall ;
; SnailMail: TifaWARE ;
; 610 South 48th St ;
; Philadelphia, PA. 19143 ;
; U.S.A. ;
; E-Mail: george@tifaware.com ;
; theall@popmail.tju.edu ;
; theall@mcneil.sas.upenn.edu ;
; george.theall@satalink.com ;
;--------------------------------------------------------------------------;
%NEWPAGE
;--------------------------------------------------------------------------;
; D I R E C T I V E S ;
;--------------------------------------------------------------------------;
DOSSEG
MODEL tiny
IDEAL
LOCALS
JUMPS
FALSE EQU 0
TRUE EQU NOT FALSE
BELL EQU 7
BS EQU 8
TAB EQU 9
CR EQU 13
LF EQU 10
ESCAPE EQU 27 ; nb: ESC is a TASM keyword
SPACE EQU ' '
KEY_F1 EQU 3bh
KEY_F2 EQU 3ch
KEY_F3 EQU 3dh
KEY_F4 EQU 3eh
KEY_F5 EQU 3fh
KEY_F6 EQU 40h
KEY_F7 EQU 41h
KEY_F8 EQU 42h
KEY_F9 EQU 43h
KEY_F10 EQU 44h
KEY_HOME EQU 47h
KEY_UP EQU 48h
KEY_PGUP EQU 49h
KEY_LEFT EQU 4bh
KEY_RIGHT EQU 4dh
KEY_END EQU 4fh
KEY_DOWN EQU 50h
KEY_PGDN EQU 51h
KEY_INS EQU 52h
KEY_DEL EQU 53h
KEY_C_F1 EQU 5eh
KEY_C_F2 EQU 5fh
KEY_C_F3 EQU 60h
KEY_C_F4 EQU 61h
KEY_C_F5 EQU 62h
KEY_C_F6 EQU 63h
KEY_C_F7 EQU 64h
KEY_C_F8 EQU 65h
KEY_C_F9 EQU 66h
KEY_C_F10 EQU 67h
KEY_C_LEFT EQU 73h
KEY_C_RIGHT EQU 74h
KEY_C_END EQU 75h
KEY_C_PGDN EQU 76h
KEY_C_HOME EQU 77h
KEY_C_PGUP EQU 84h
KEY_F11 EQU 85h
KEY_F12 EQU 86h
KEY_C_F11 EQU 89h
KEY_C_F12 EQU 8ah
@16BIT EQU (@Cpu AND 8) EQ 0
@32BIT EQU (@Cpu AND 8)
NOWARN RES
MACRO PUSHA ;; Pushs all registers
IF @Cpu AND 2 ;; if for 80186 or better
pusha ;; use regular opcode
ELSE ;; else
push ax cx dx bx sp bp si di ;; nb: order matters!
;; nb: SP is not original!
ENDIF
ENDM
MACRO POPA ;; Pops all registers
IF @Cpu AND 2 ;; if for 80186 or better
popa ;; use regular opcode
ELSE ;; else
pop di si bp bx bx dx cx ax ;; nb: order matters!
;; nb: don't pop SP!
ENDIF
ENDM
NOWARN RES
MACRO ZERO RegList ;; Zeros registers
IRP Reg, <RegList>
xor Reg, Reg
ENDM
ENDM
DOS EQU 21h ; main MSDOS interrupt
STDIN EQU 0 ; standard input
STDOUT EQU 1 ; standard output
STDERR EQU 2 ; error output
STDAUX EQU 3 ; COM port
STDPRN EQU 4 ; printer
TSRMAGIC EQU 424bh ; magic number
STRUC ISR
Entry DW 10EBh ; short jump ahead 16 bytes
OldISR DD ? ; next ISR in chain
Sig DW TSRMAGIC ; magic number
EOIFlag DB ? ; 0 (80) if soft(hard)ware int
Reset DW ? ; short jump to hardware reset
Reserved DB 7 dup (0)
ENDS
STRUC ISRHOOK
Vector DB ? ; vector hooked
Entry DW ? ; offset of TSR entry point
ENDS
STRUC TSRSIG
Company DB 8 dup (" ") ; blank-padded company name
Product DB 8 dup (" ") ; blank-padded product name
Desc DB 64 dup (0) ; ASCIIZ product description
ENDS
GLOBAL at : PROC
GLOBAL errmsg : PROC
GLOBAL ProgName : BYTE ; needed for errmsg()
GLOBAL EOL : BYTE ; ditto
GLOBAL fgetc : PROC
GLOBAL fputc : PROC
GLOBAL fputs : PROC
GLOBAL getchar : PROC
GLOBAL getdate : PROC
GLOBAL getswtch : PROC
GLOBAL gettime : PROC
GLOBAL getvdos : PROC
GLOBAL getvect : PROC
GLOBAL isatty : PROC
GLOBAL kbhit : PROC
GLOBAL pause : PROC
GLOBAL putchar : PROC
GLOBAL setvect : PROC
GLOBAL sleep : PROC
GLOBAL find_NextISR : PROC
GLOBAL find_PrevISR : PROC
GLOBAL hook_ISR : PROC
GLOBAL unhook_ISR : PROC
GLOBAL free_Env : PROC
GLOBAL fake_Env : PROC
GLOBAL check_ifInstalled : PROC
GLOBAL install_TSR : PROC
GLOBAL remove_TSR : PROC
GLOBAL atoi : PROC
GLOBAL atou : PROC
GLOBAL utoa : PROC
EOS